﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QLVatTu.Class;
using QLVatTu.InPhieu;

namespace QLVatTu.NghiepVu
{
    public partial class frmQuanLyDuTruVatTu : Form
    {
        KetNoiDB cn = new KetNoiDB();

        public frmQuanLyDuTruVatTu()
        {
            InitializeComponent();
        }

        private void loadData()
        {
            cbbCongTrinhDuAn.DataSource = cn.getTable("select * from tbl_CongTrinhDuAn");
            cbbCongTrinhDuAn.DisplayMember = "TenCongTrinhDuAn";
            cbbCongTrinhDuAn.ValueMember = "MaCongTrinhDuAn";

            cbbTrangThai.DataSource = cn.CreateTrangThai();
            cbbTrangThai.DisplayMember = "TenTrangThai";
            cbbTrangThai.ValueMember = "TrangThai";

            load_dtgPhieuDuTru();
        }

        private void load_dtgPhieuDuTru(string dieuKien = null)
        {
            string sql = "";
            if (dieuKien != null)
            {
                sql = @"SELECT   row_number() over(order by tbl_PhieuDuTru.SoPhieu) as STT, dbo.tbl_PhieuDuTru.SoPhieu, dbo.tbl_PhieuDuTru.NgayDuTru, dbo.tbl_CongTrinhDuAn.TenCongTrinhDuAn, dbo.tbl_PhieuDuTru.TrangThai
                        FROM         dbo.tbl_PhieuDuTru INNER JOIN
                                              dbo.tbl_CongTrinhDuAn ON dbo.tbl_PhieuDuTru.MaCongTrinhDuAn = dbo.tbl_CongTrinhDuAn.MaCongTrinhDuAn
                        " + dieuKien;
            }
            else
            {
                sql = @"SELECT   row_number() over(order by tbl_PhieuDuTru.SoPhieu) as STT, dbo.tbl_PhieuDuTru.SoPhieu, dbo.tbl_PhieuDuTru.NgayDuTru, dbo.tbl_CongTrinhDuAn.TenCongTrinhDuAn, dbo.tbl_PhieuDuTru.TrangThai
                        FROM         dbo.tbl_PhieuDuTru INNER JOIN
                                              dbo.tbl_CongTrinhDuAn ON dbo.tbl_PhieuDuTru.MaCongTrinhDuAn = dbo.tbl_CongTrinhDuAn.MaCongTrinhDuAn";
            }

            dtgPhieuDuTru.Rows.Clear();
            DataTable tbl = cn.getTable(sql);
            if (tbl.Rows.Count > 0)
            {
                foreach (DataRow dr in tbl.Rows)
                {
                    DataGridViewRow dtgRow = (DataGridViewRow)dtgPhieuDuTru.Rows[0].Clone();
                    dtgRow.Cells[0].Value = dr["STT"].ToString();
                    dtgRow.Cells[1].Value = dr["SoPhieu"].ToString();
                    dtgRow.Cells[2].Value = DateTime.Parse(dr["NgayDuTru"].ToString());
                    dtgRow.Cells[3].Value = dr["TenCongTrinhDuAn"].ToString();

                    bool TrangThai = bool.Parse(dr["TrangThai"].ToString());
                    if (TrangThai == true)
                    {
                        dtgRow.Cells[4].Value = "Đã phê duyệt";
                    }
                    else
                    {
                        dtgRow.Cells[4].Value = "Chưa phê duyệt";
                    }
                    dtgPhieuDuTru.Rows.Add(dtgRow);
                }
            }
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            frmDuTruVatTu frm = new frmDuTruVatTu();
            frm.ShowDialog();
            load_dtgPhieuDuTru();
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            if (TopLevel == false) this.Parent.Parent.Controls.Remove(this.Parent);
            else this.Close();
        }

        private void frmQuanLyDuTruVatTu_Load(object sender, EventArgs e)
        {
            if (cn.KetNoi())
            {
                loadData();
            }
        }

        private void dtgPhieuDuTru_SelectionChanged(object sender, EventArgs e)
        {
            if (dtgPhieuDuTru.SelectedRows.Count > 0 && dtgPhieuDuTru.CurrentRow.Cells["SoPhieu"].Value!=null)
            {
                string sql = "";
                if (dtgPhieuDuTru.CurrentRow.Cells["TrangThai"].Value.ToString() == "Đã phê duyệt")
                {
                    btnDuyet.Text = "Hủy duyệt";
                }
                else
                {
                    btnDuyet.Text = "Phê duyệt";
                }

                sql = @"SELECT   row_number() over(order by tbl_ChiTietPhieuDuTru.SoPhieu) as STT, dbo.tbl_VatTu.TenVatTu, dbo.tbl_DonViTinh.TenDonViTinh as DonViTinh, dbo.tbl_ChiTietPhieuDuTru.SoLuong
                                FROM         dbo.tbl_ChiTietPhieuDuTru INNER JOIN
                                                      dbo.tbl_DonViTinh ON dbo.tbl_ChiTietPhieuDuTru.MaDonViTinh = dbo.tbl_DonViTinh.MaDonViTinh INNER JOIN
                                                      dbo.tbl_VatTu ON dbo.tbl_ChiTietPhieuDuTru.MaVatTu = dbo.tbl_VatTu.MaVatTu
                                WHERE tbl_ChiTietPhieuDuTru.SoPhieu='" + dtgPhieuDuTru.CurrentRow.Cells["SoPhieu"].Value.ToString() + "'";
                dtgChiTiet.Rows.Clear();
                DataTable tbl = cn.getTable(sql);
                if (tbl.Rows.Count > 0)
                {
                    foreach (DataRow dr in tbl.Rows)
                    {
                        DataGridViewRow dgvr = (DataGridViewRow)dtgChiTiet.Rows[0].Clone();
                        dgvr.Cells[0].Value=dr["STT"].ToString();
                        dgvr.Cells[1].Value=dr["TenVatTu"].ToString();
                        dgvr.Cells[2].Value=dr["DonViTinh"].ToString();
                        dgvr.Cells[3].Value=dr["SoLuong"].ToString();
                        dtgChiTiet.Rows.Add(dgvr);
                    }
                }
            }
            else
            {
                dtgChiTiet.Rows.Clear();
            }
        }

        private void ckbTimTheoNgay_CheckedChanged(object sender, EventArgs e)
        {
            if (ckbTimTheoNgay.Checked == true)
            {
                dtipTuNgay.Enabled = true;
                dtipDenNgay.Enabled = true;
            }
            else
            {
                dtipTuNgay.Enabled = false;
                dtipDenNgay.Enabled = false;
            }
        }

        private string XacDinhDieuKienLoc()
        {
            string dieuKienLoc = "where 1=1";

            if (ckbSoPhieu.Checked == true && txtSoPhieu.Text != "")
            {
                dieuKienLoc += "and tbl_PhieuDutru.SoPhieu like '%" + txtSoPhieu.Text + "%'";
            }

            if (ckbCongTrinhDuAn.Checked == true)
            {
                dieuKienLoc += "and tbl_PhieuDutru.MaCongTrinhDuAn='" + cbbCongTrinhDuAn.SelectedValue.ToString() + "'";
            }

            if (ckbTimTheoNgay.Checked == true)
            {
                dieuKienLoc += "and tbl_PhieuDutru.NgayDuTru between '"+dtipTuNgay.Value.ToString()+"' and '"+dtipDenNgay.Value.ToString()+"'";
            }

            if (ckbTimTheoTrangThai.Checked == true)
            {
                dieuKienLoc += "and tbl_PhieuDuTru.TrangThai='" + cbbTrangThai.SelectedValue.ToString() + "'";
            }

            return dieuKienLoc;
        }

        private void btnTimKiem_Click(object sender, EventArgs e)
        {
            load_dtgPhieuDuTru(XacDinhDieuKienLoc());
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            if (dtgPhieuDuTru.SelectedRows.Count > 0 && dtgPhieuDuTru.CurrentRow.Cells["SoPhieu"].Value != null)
            {
                bool TrangThai = bool.Parse(cn.LayDuLieu("SELECT [TrangThai] FROM [tbl_PhieuDuTru] WHERE [SoPhieu] = '" + dtgPhieuDuTru.CurrentRow.Cells["SoPhieu"].Value.ToString() + "'"));
                if (TrangThai == true)
                {
                    MessageBox.Show("Bạn không thể sửa phiếu dự trù đã được ký duyệt!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                frmDuTruVatTu frm = new frmDuTruVatTu();
                frm.MaPhieuDuTru=dtgPhieuDuTru.CurrentRow.Cells["SoPhieu"].Value.ToString();
                frm.ShowDialog();
                load_dtgPhieuDuTru();
            }
        }

        private void btnIn_Click(object sender, EventArgs e)
        {
            frmInPhieuDuTruVatTu frm = new frmInPhieuDuTruVatTu();
            if (dtgPhieuDuTru.SelectedRows.Count > 0 && dtgPhieuDuTru.CurrentRow.Cells["SoPhieu"].Value != null)
            {
                string SoPhieu=dtgPhieuDuTru.CurrentRow.Cells["SoPhieu"].Value.ToString();
                List<PhieuDuTruVatTu> list = new List<PhieuDuTruVatTu>();
                 string Ngay="";
                string Thang="";
                string Nam="";
                string CongTrinhDuAn="";

                string sql = "";

                sql = @"SELECT dbo.tbl_PhieuDuTru.SoPhieu, dbo.tbl_PhieuDuTru.NgayDuTru, dbo.tbl_CongTrinhDuAn.TenCongTrinhDuAn
                        FROM         dbo.tbl_PhieuDuTru INNER JOIN
                                              dbo.tbl_CongTrinhDuAn ON dbo.tbl_PhieuDuTru.MaCongTrinhDuAn = dbo.tbl_CongTrinhDuAn.MaCongTrinhDuAn
                        WHERE tbl_PhieuDuTru.SoPhieu='"+SoPhieu+"'";
                DataTable dt = cn.getTable(sql);
                if (dt.Rows.Count > 0)
                {
                    DateTime dtNgayLap = DateTime.Parse(dt.Rows[0]["NgayDuTru"].ToString());
                     Ngay = dtNgayLap.Day.ToString();
                     Thang = dtNgayLap.Month.ToString();
                     Nam = dtNgayLap.Year.ToString();
                     CongTrinhDuAn=dt.Rows[0]["TenCongTrinhDuAn"].ToString();
                }

                sql = @"SELECT  tbl_ChiTietPhieuDuTru.MaVatTu, dbo.tbl_VatTu.TenVatTu, dbo.tbl_DonViTinh.TenDonViTinh as DonViTinh, dbo.tbl_ChiTietPhieuDuTru.SoLuong
                                FROM         dbo.tbl_ChiTietPhieuDuTru INNER JOIN
                                                      dbo.tbl_DonViTinh ON dbo.tbl_ChiTietPhieuDuTru.MaDonViTinh = dbo.tbl_DonViTinh.MaDonViTinh INNER JOIN
                                                      dbo.tbl_VatTu ON dbo.tbl_ChiTietPhieuDuTru.MaVatTu = dbo.tbl_VatTu.MaVatTu
                                WHERE tbl_ChiTietPhieuDuTru.SoPhieu='"+SoPhieu+"'";
                int stt = 0;
                DataTable tbl = cn.getTable(sql);
                if (tbl.Rows.Count > 0)
                {
                    foreach (DataRow dr in tbl.Rows)
                    {
                        stt++;
                        PhieuDuTruVatTu pdt = new PhieuDuTruVatTu();
                        pdt.SoPhieu = SoPhieu;
                        pdt.Ngay = Ngay;
                        pdt.Thang = Thang;
                        pdt.Nam = Nam;
                        pdt.CongTrinhDuAn = CongTrinhDuAn;

                        pdt.STT = stt.ToString();
                        pdt.MaVatTu=dr["MaVatTu"].ToString();
                        pdt.TenVatTu=dr["TenVatTu"].ToString();
                        pdt.DVT=dr["DonViTinh"].ToString();
                        pdt.SoLuong=dr["SoLuong"].ToString();
                        list.Add(pdt);
                    }
                }
                frm.phieuDuTruVatTuBindingSource.DataSource = list;
                frm.ShowDialog();
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (dtgPhieuDuTru.SelectedRows.Count > 0 && dtgPhieuDuTru.CurrentRow.Cells["SoPhieu"].Value != null)
            {
                bool TrangThai = bool.Parse(cn.LayDuLieu("SELECT [TrangThai] FROM [tbl_PhieuDuTru] WHERE [SoPhieu] = '" + dtgPhieuDuTru.CurrentRow.Cells["SoPhieu"].Value.ToString() + "'"));
                if (TrangThai == true)
                {
                    MessageBox.Show("Bạn không thể xóa phiếu dự trù đã được ký duyệt!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                else
                {
                    DialogResult msg = MessageBox.Show("Bạn chắc chắn muốn xóa?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (msg == DialogResult.Yes)
                    {
                        cn.Delete_Table("tbl_ChiTietPhieuDuTru", "SoPhieu='" + dtgPhieuDuTru.CurrentRow.Cells["SoPhieu"].Value.ToString() + "'");
                        cn.Delete_Table("tbl_PhieuDuTru", "SoPhieu='" + dtgPhieuDuTru.CurrentRow.Cells["SoPhieu"].Value.ToString() + "'");
                        MessageBox.Show("Xóa thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
            load_dtgPhieuDuTru();
        }

        private void btnPhieuYeuCauNhap_Click(object sender, EventArgs e)
        {
            if (dtgPhieuDuTru.SelectedRows.Count > 0)
            {
                if (dtgPhieuDuTru.CurrentRow.Cells["TrangThai"].Value.ToString() == "Chưa phê duyệt")
                {
                    MessageBox.Show("Phiếu dự trù này chưa được phê duyệt!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                else
                {
                    string SoPhieu = cn.LayDuLieu("select MaPhieuDuTru from tbl_PhieuYeuCauNhap where MaPhieuDuTru='" + dtgPhieuDuTru.CurrentRow.Cells["SoPhieu"].Value.ToString() + "'");
                    if (SoPhieu != "")
                    {
                        MessageBox.Show("Đã lập yêu cầu nhập cho phiếu dự trù này.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
                    else
                    {
                        frmPhieuYeuCauNhap frm = new frmPhieuYeuCauNhap();
                        frm.PhieuDuTru = dtgPhieuDuTru.CurrentRow.Cells["SoPhieu"].Value.ToString();
                        frm.ShowDialog();
                    }
                }
            }
            else
            {
                MessageBox.Show("Chưa chọn phiếu dự trù.","Thông báo",MessageBoxButtons.OK,MessageBoxIcon.Warning);
                return;
            }
        }

        private void btnDuyet_Click(object sender, EventArgs e)
        {
            if (btnDuyet.Text == "Phê duyệt" && dtgPhieuDuTru.SelectedRows.Count > 0 && dtgPhieuDuTru.CurrentRow.Cells["TrangThai"].Value.ToString() == "Chưa phê duyệt")
            {
                DialogResult msg = MessageBox.Show("Bạn có chắc chắn muốn phê duyệt phiếu?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                {
                    if (msg == DialogResult.Yes)
                    {
                        byte TrangThai = 1;
                        cn.Update_Table("tbl_PhieuDuTru", "TrangThai='" + TrangThai + "'", "SoPhieu='" + dtgPhieuDuTru.CurrentRow.Cells["SoPhieu"].Value.ToString() + "'");
                    }
                }
            }
            if (btnDuyet.Text == "Hủy duyệt" && dtgPhieuDuTru.SelectedRows.Count > 0 && dtgPhieuDuTru.CurrentRow.Cells["TrangThai"].Value.ToString() == "Đã phê duyệt")
            {
                DialogResult msg = MessageBox.Show("Bạn có chắc chắn muốn hủy phê duyệt phiếu?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                {
                    if (msg == DialogResult.Yes)
                    {
                        string SoPhieu = cn.LayDuLieu("select MaPhieuDuTru from tbl_PhieuYeuCauNhap where MaPhieuDuTru='" + dtgPhieuDuTru.CurrentRow.Cells["SoPhieu"].Value.ToString() + "'");
                        if (SoPhieu != "")
                        {
                            MessageBox.Show("Đã lập phiếu yêu cầu nhập. Không thể hủy duyệt.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                        byte TrangThai = 0;
                        cn.Update_Table("tbl_PhieuDuTru", "TrangThai='" + TrangThai + "'", "SoPhieu='" + dtgPhieuDuTru.CurrentRow.Cells["SoPhieu"].Value.ToString() + "'");
                    }
                }
            }
            load_dtgPhieuDuTru();
        }

        private void btnDuyet_TextChanged(object sender, EventArgs e)
        {

        }

        private void ckbTimTheoTrangThai_CheckedChanged(object sender, EventArgs e)
        {
            if (ckbTimTheoTrangThai.Checked == true)
            {
                cbbTrangThai.Enabled = true;
            }
            else
            {
                cbbTrangThai.Enabled = false;
            }
        }

        private void ckbSoPhieu_CheckedChanged(object sender, EventArgs e)
        {
            if (ckbSoPhieu.Checked == true)
            {
                txtSoPhieu.Text = "";
                txtSoPhieu.Enabled = true;
            }
            else
            {
                txtSoPhieu.Text = "Tìm theo số phiếu";
                txtSoPhieu.Enabled = false;
            }
        }

        private void ckbCongTrinhDuAn_CheckedChanged(object sender, EventArgs e)
        {
            if (ckbCongTrinhDuAn.Checked == true)
            {
                cbbCongTrinhDuAn.Enabled = true;
            }
            else
            {
                cbbCongTrinhDuAn.Enabled = false;
            }
        }

        private void radLoad_CheckedChanged(object sender, EventArgs e)
        {
            if (radLoad.Checked == true)
            {
                load_dtgPhieuDuTru();
                radLoad.Checked = false;
                ckbTimTheoNgay.Checked = false;
                ckbSoPhieu.Checked = false;
                ckbCongTrinhDuAn.Checked = false;
                ckbTimTheoTrangThai.Checked = false;
            }
        }
    }
}
